import { post, apiPaths } from '../../utils/request.js'

Page({
  data: {
    projectId: null,
    workflowStatuses: [],
    newStatus: {
      name: '',
      color: '#007AFF',
      order: 0
    },
    // 编辑状态相关数据
    editingStatus: null,
    showEditModal: false
  },

  onLoad(options) {
    if (options.projectId) {
      this.setData({
        projectId: options.projectId
      })
      this.loadWorkflowStatuses(options.projectId)
    }
  },

  loadWorkflowStatuses(projectId) {
    // 调用获取工作流状态接口
    post(apiPaths.getWorkflowStatuses, { projectId: projectId }).then(res => {
      if (res.code === 200) {
        this.setData({
          workflowStatuses: res.data || []
        })
      } else {
        wx.showToast({
          title: res.message || '获取工作流状态失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.showToast({
        title: err.message || '获取工作流状态失败',
        icon: 'none'
      })
    })
  },

  onStatusNameInput(e) {
    this.setData({
      'newStatus.name': e.detail.value
    })
  },

  onStatusColorChange(e) {
    this.setData({
      'newStatus.color': e.detail.value
    })
  },

  onStatusOrderInput(e) {
    this.setData({
      'newStatus.order': parseInt(e.detail.value) || 0
    })
  },

  addWorkflowStatus() {
    if (!this.data.newStatus.name) {
      wx.showToast({
        title: '请输入状态名称',
        icon: 'none'
      })
      return
    }
    
    if (!this.data.projectId) {
      wx.showToast({
        title: '项目ID不能为空',
        icon: 'none'
      })
      return
    }
    
    // 调用添加工作流状态接口
    post(apiPaths.addWorkflowStatus, {
      projectId: this.data.projectId,
      name: this.data.newStatus.name,
      color: this.data.newStatus.color,
      order: this.data.newStatus.order
    }).then(res => {
      if (res.code === 200) {
        wx.showToast({
          title: '状态添加成功',
          icon: 'success'
        })
        
        // 清空输入框
        this.setData({
          'newStatus.name': '',
          'newStatus.color': '#007AFF',
          'newStatus.order': 0
        })
        
        // 重新加载工作流状态
        this.loadWorkflowStatuses(this.data.projectId)
      } else {
        wx.showToast({
          title: res.message || '状态添加失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.showToast({
        title: err.message || '状态添加失败',
        icon: 'none'
      })
    })
  },

  // 显示编辑状态弹窗
  onEditWorkflowStatus(e) {
    const status = e.currentTarget.dataset.status
    this.setData({
      editingStatus: status,
      showEditModal: true,
      newStatus: {
        name: status.name,
        color: status.color,
        order: status.order_num
      }
    })
  },
  
  // 关闭编辑状态弹窗
  onCloseEditModal() {
    this.setData({
      showEditModal: false,
      editingStatus: null
    })
  },
  
  // 更新工作流状态
  onUpdateWorkflowStatus() {
    if (!this.data.newStatus.name) {
      wx.showToast({
        title: '请输入状态名称',
        icon: 'none'
      })
      return
    }
    
    if (!this.data.editingStatus) {
      wx.showToast({
        title: '未选择要编辑的状态',
        icon: 'none'
      })
      return
    }
    
    // 调用更新工作流状态接口
    post(apiPaths.updateWorkflowStatus, {
      id: this.data.editingStatus.id,
      name: this.data.newStatus.name,
      color: this.data.newStatus.color,
      order: this.data.newStatus.order
    }).then(res => {
      if (res.code === 200) {
        wx.showToast({
          title: '状态更新成功',
          icon: 'success'
        })
        
        this.setData({
          showEditModal: false,
          editingStatus: null
        })
        
        // 重新加载工作流状态
        this.loadWorkflowStatuses(this.data.projectId)
      } else {
        wx.showToast({
          title: res.message || '状态更新失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.showToast({
        title: err.message || '状态更新失败',
        icon: 'none'
      })
    })
  },

  deleteWorkflowStatus(e) {
    const statusId = e.currentTarget.dataset.id
    wx.showModal({
      title: '确认删除',
      content: '确定要删除该状态吗？',
      success: (res) => {
        if (res.confirm) {
          // 调用删除工作流状态接口
          post(apiPaths.deleteWorkflowStatus, {
            id: statusId
          }).then(res => {
            if (res.code === 200) {
              wx.showToast({
                title: '状态已删除',
                icon: 'success'
              })
              // 重新加载工作流状态
              this.loadWorkflowStatuses(this.data.projectId)
            } else {
              wx.showToast({
                title: res.message || '状态删除失败',
                icon: 'none'
              })
            }
          }).catch(err => {
            wx.showToast({
              title: err.message || '状态删除失败',
              icon: 'none'
            })
          })
        }
      }
    })
  }
})